/**
 * 需求统计数据相关JavaScript
 */

var currentStatsIssueId = null;

/**
 * 打开需求统计模态框
 */
function openIssueStatsModal(issueId) {
    currentStatsIssueId = issueId;
    $('#issueStatsModal').modal('show');
    loadStatsData(issueId);
}

/**
 * 加载统计数据
 */
function loadStatsData(issueId) {
    $.ajax({
        url: ctx + 'project/issue/stats/' + issueId,
        type: 'GET',
        success: function(result) {
            if (result.code == 0) {
                displayStatsData(result.data);
            } else {
                layer.msg('获取统计数据失败: ' + result.msg, {icon: 2});
            }
        },
        error: function() {
            layer.msg('网络错误，获取统计数据失败', {icon: 2});
        }
    });
}

/**
 * 显示统计数据
 */
function displayStatsData(data) {
    // 显示类别统计数据
    if (data.categoryStats) {
        var stats = data.categoryStats;
        $('#avgProcessingTime').text(stats.avgProcessingTimeHours ? stats.avgProcessingTimeHours + ' 小时' : '--');
        $('#successRate').text(stats.successRate ? stats.successRate + '%' : '--');
        $('#retryRate').text(stats.retryRate ? stats.retryRate + '%' : '--');
        $('#sampleCount').text(stats.sampleCount || '--');
        $('#estimatedTime').text(stats.avgProcessingTimeHours ? stats.avgProcessingTimeHours : '--');
    }
    
    // 显示推荐处理人
    if (data.recommendedAssignee && data.recommendedAssignee.userId) {
        $('#assigneeName').text(data.recommendedAssignee.userName || '--');
        $('#assigneeAvgTime').text(data.recommendedAssignee.avgProcessingTime || '--');
        $('#assigneeSuccessCount').text(data.recommendedAssignee.successCount || '--');
        $('#assigneeTotalCount').text(data.recommendedAssignee.totalCount || '--');
    }
    
    // 显示历史处理记录
    if (data.similarHistory && data.similarHistory.length > 0) {
        displaySimilarHistory(data.similarHistory);
    } else {
        $('#similarHistoryList').html('<tr><td colspan="6" class="text-center">暂无历史处理记录</td></tr>');
    }
    
    // 绘制处理时间分布图表
    if (data.similarHistory && data.similarHistory.length > 0) {
        drawProcessingTimeChart(data.similarHistory);
    }
}

/**
 * 显示历史处理记录
 */
function displaySimilarHistory(history) {
    var html = '';
    
    for (var i = 0; i < history.length; i++) {
        var record = history[i];
        
        html += '<tr>';
        html += '<td><a href="javascript:void(0);" onclick="openIssueDetail(' + record.issueId + ')">#' + record.issueId + '</a></td>';
        html += '<td>' + (record.issueSubject || '') + '</td>';
        html += '<td>' + (record.assignedToName || '--') + '</td>';
        html += '<td>' + (record.operationTypeName || '') + '</td>';
        html += '<td>' + (record.processingHours ? record.processingHours + ' 小时' : '--') + '</td>';
        html += '<td>' + (record.operationTime ? formatDateTime(record.operationTime) : '--') + '</td>';
        html += '</tr>';
    }
    
    $('#similarHistoryList').html(html);
}

/**
 * 绘制处理时间分布图表
 */
function drawProcessingTimeChart(history) {
    // 准备数据
    var chartData = [];
    var categories = [];
    
    // 只取前10条记录
    var limit = Math.min(history.length, 10);
    for (var i = 0; i < limit; i++) {
        var record = history[i];
        if (record.processingHours && record.issueSubject) {
            chartData.push({
                y: parseFloat(record.processingHours),
                name: '#' + record.issueId + ' ' + record.issueSubject.substring(0, 20) + (record.issueSubject.length > 20 ? '...' : '')
            });
            categories.push('#' + record.issueId);
        }
    }
    
    // 使用ECharts绘制图表
    if (typeof echarts !== 'undefined') {
        var chart = echarts.init(document.getElementById('processingTimeChart'));
        var option = {
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                    type: 'shadow'
                }
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            },
            xAxis: {
                type: 'category',
                data: categories,
                axisLabel: {
                    interval: 0,
                    rotate: 45
                }
            },
            yAxis: {
                type: 'value',
                name: '处理时长(小时)'
            },
            series: [
                {
                    name: '处理时长',
                    type: 'bar',
                    data: chartData,
                    itemStyle: {
                        color: '#36a9e1'
                    }
                }
            ]
        };
        
        chart.setOption(option);
        
        // 响应式调整
        window.addEventListener('resize', function() {
            chart.resize();
        });
    } else {
        // 如果ECharts不可用，显示简单的表格
        $('#processingTimeChart').html('<div class="alert alert-warning">图表组件加载失败，请刷新页面重试</div>');
    }
}

/**
 * 显示推荐处理人卡片
 */
function showRecommendedAssignee() {
    $('#recommendedAssigneeCard').show();
}

/**
 * 刷新统计数据
 */
function refreshStatsData() {
    if (currentStatsIssueId) {
        loadStatsData(currentStatsIssueId);
        layer.msg('数据已刷新', {icon: 1});
    }
}

/**
 * 格式化日期时间
 */
function formatDateTime(dateTimeStr) {
    if (!dateTimeStr) return '';
    
    var date = new Date(dateTimeStr);
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var day = date.getDate();
    var hours = date.getHours();
    var minutes = date.getMinutes();
    
    return year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day) + ' ' +
           (hours < 10 ? '0' + hours : hours) + ':' + (minutes < 10 ? '0' + minutes : minutes);
}